window.onload = function () {
    // step 1 获取表单对象
    /*
    取值方法：
    var 表单对象=document.forms["表单名"]
    谁（对象），什么时候（事件），做什么事（业务逻辑的处理）
    * 利用表单submit的一个特性来完成表单的校验
    * 当submit事件接收到true的时候，表单才会提交，接收到false的时候表单不提交！
    * */
    //step 2 获取表单控件对象的值
    /*
    * 表单控件主要分为：键盘输入型，鼠标选择输入型
    * a:键盘输入型
    * 取值方法：表单对象.控件名.value
    *
    * 鼠标选择输入型的控件，radio和checkbox，均用checked属性来完成值的获取
    *
    * */
    var formObj = document.forms["myform"];
    var idcardObj = formObj.idcard;
    var addressObj = formObj.address;
    var birthdayObj = formObj.birthday;
    var genderObj = formObj.gender;

    idcardObj.onfocus = function () {
        //console.log("现在我是焦点");
    };
    idcardObj.onblur = function () {
        //console.log("已经失去焦点");
        var idcardVal = this.value;
        var flag = checkIdCardNumber(idcardVal);
        var address = "";
        if (flag) {
            var iAreaCode = idcardVal.substr(0, 6);
            var genderCode = idcardVal.substr(16, 1);
            for (var x in areaCodeArr) {
                if (iAreaCode == areaCodeArr[x].areaCode) {
                    address = areaCodeArr[x].detail;
                    break;
                }
            }
            var year = idcardVal.substr(6,4);
            var month = idcardVal.substr(10,2);
            var day = idcardVal.substr(12,2);

            birthdayObj.value = year+"--"+month+"--"+day;

            genderObj[genderCode % 2].checked = true;

            addressObj.value = (address.length != 0) ? address : "未知区域";
        }
    };

    formObj.onsubmit = function () {

        var idcardVal = idcardObj.value;
        var flag = checkIdCardNumber(idcardVal);
        //console.log("输入的身份证号码：" + idcardVal);
        console.log(flag);
        var details = "";
        if (flag) {
            var iAreaCode = idcardVal.substr(0, 6);
            for (var x in areaCodeArr) {
                if (iAreaCode == areaCodeArr[x].areaCode) {
                    details = areaCodeArr[x].detail;
                    break;
                }
            }
        }
        console.log(details);
        return false;
    };

    //小驼峰命名法
    function checkIdCardNumber(str) {
        if (str.length != 18) {
            //alert("对不起您输入的身份证号码不是18位");
            return false;
        }
        //js的字符截取 substr和substring的区别
        //substr(x,y)，从下标x的字符起，由左向右取y个长度
        //substring(a,b)，从下标a的字符起取到下标为b的值之前，如果a>b则由左向右取值，反之由右向左
        str = str.toUpperCase();
        var newStr = str.substr(0, 17);
        var wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
        var cArr = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
        var sigma = 0;
        for (var i = 0; i < 17; i++) {
            sigma += wi[i] * newStr[i];
        }
        var tmpC = sigma % 11;
        var code = cArr[tmpC];
        newStr = newStr + code;
        return (newStr == str);
    }
};

// for(var i=17;i>0;i--){
//     console.log( (Math.pow(2,i) %11) )
// }
